1. Technical Field
This application relates to computer software, and more particularly to the field of tracking use of objects in software.
2. Description of Related Art
Computer software programs create, use, and discard software objects at run time and, in some cases, according to run time conditions. When objects are created, memory is allocated for use. Objects which are not discarded, such as by performing garbage collection, may result in inefficient memory usage. Inefficient memory usage by a program may create performance and scalability problems.
Current memory diagnostic tools may provide memory footprint analysis resulting in a current view of allocated objects. Memory analysis tools may provide a view of what memory is allocated that may never be used and/or referenced, or memory which is never deallocated by a program. However, existing techniques may not provide for automatically measuring and quantifying the memory usage of objects that have remained allocated for too long or objects that have been allocated too early. For example, various user interactions may be required to obtain each current view or snapshot at different points in time. Additionally, it may not be easy to determine or quantify a difference between memory usage associated with each snapshot or view.
It is desirable to provide a technique which gives insight into memory usage, such as for objects, for an arbitrary period of time of a program's lifetime in an automated fashion. It is also desirable that this technique provide a mechanism to easily quantify memory quality and efficiency. It is also desirable that this technique be generally applicable for use with different resources in addition to object memory usage.